#ifndef __CGAME_BOTS_H__
#define __CGAME_BOTS_H__

#define BOTS_CAPTAIN       1
#define BOTS_BODYGUARD     2
#define BOTS_SNIPER        3
#define BOTS_SOLDIER       4
#define BOTS_BERZERKER     5
#define BOTS_INFILTRATOR   6
#define BOTS_KAMIKAZEE     7
#define BOTS_NURSE         8
#define BOTS_SCIENTIST     9
#define BOTS_MAXCLASSES	   9


// we could use BG_FindItem->giTag to get the values, but seeing as how
// this is done for every frame (I think) I can hard code them to eliminate
// the search - this should help performance a bit.
// I am using BG_FindItem->giTag in cg_main.c though.
#define AMMO_SHELLS		18
#define AMMO_BULLETS	19
#define AMMO_GRENADES	20
#define AMMO_PLASMA		21
#define AMMO_LIGHTNING	22
#define AMMO_ROCKETS	23
#define AMMO_SLUGS		24
#define AMMO_BFG		25

qboolean BOTS_CG_ConsoleCommand(const char* cmd);
qboolean BOTS_CG_ServerCommand(const char* cmd);

float BOTS_DrawClassData( float y );
void BOTS_DrawStatusBar();
void BOTS_DrawLowerLeft();
void BOTS_DrawUpperRight();

void CG_BOTS_Laser( centity_t *cent, int entType );
void CG_BOTS_flare(centity_t* cent);
void CG_BOTS_Obituary( entityState_t *ent );
void BOTS_plusgren(void);
void BOTS_minusgren(void);
void BOTS_decoy_grenades( centity_t *cent );
qhandle_t BOTS_get_decoy_model();

void BOTS_poison_health_setup();
qboolean BOTS_player_kick();
void BOTS_poison_weapon_setup();
void BOTS_poison_stop();
void BOTS_poison_debug(int toggle);

void BOTS_setup_blind(const char* cmd);
void BOTS_blind();
void BOTS_kill_blind();
void BOTS_plusblink(void);
void BOTS_minusblink(void);
void BOTS_stinger_trail( clientInfo_t *ci, vec3_t start, vec3_t end );

void CG_AliasUp_f (void);
void CG_AliasDown_f (void);

// Radio stuff
void BOTS_Radiotog_f(void);
void BOTS_Radio_f(void);
void BOTS_Radiolist_f(void);
void BOTS_Radio_display(int sourceNum, int radiomsgNum);
void BOTS_RadioRegisterSounds(void);

// q3 functions
void CG_DrawField (int x, int y, int width, int value);
void CG_Draw3DModel( float x, float y, float w, float h, qhandle_t model, qhandle_t skin, vec3_t origin, vec3_t angles );
void CG_DrawStatusBarFlag( float x, int team );
int  CG_DrawPickupItem( int y );
float CG_DrawTeamOverlay( float y, qboolean right, qboolean upper );
float CG_DrawSnapshot( float y );
float CG_DrawFPS( float y );
float CG_DrawTimer( float y );

// tbp's code
void FX_GibFountain( vec3_t origin );
void FX_SmokeCloudGenerator(vec3_t origin, int msec);
void FX_TesselateSphere(vec3_t origin, qhandle_t shader, float uSeed, float dtheta, float dphi, float radius);
localEntity_t *CG_NukeFX( vec3_t origin, qhandle_t hModel, qhandle_t shader, int msec);
void BOTS_HealRadius(int clientNum, int nurseNum);
void BOTS_Tendril(centity_t *cent, int clientNum);
void BOTS_Warcry(int clientNum);
void BOTS_DrawLowerRight( qboolean bSpectator);
void BOTS_updateClassData();

void BOTS_registerHUDicons();
void BOTS_newDrawStatusBar();
void BOTS_newDrawLowerLeft();

void BOTS_Datacount_f(void); // Debug

void BOTS_drawUgly();	// TEST
void BOTS_Effect1(vec3_t origin);
void BOTS_Effect2(vec3_t origin);
void BOTS_Effect3(vec3_t origin);
void BOTS_Effect4(vec3_t origin);
void BOTS_Effect5(vec3_t origin);

#define MAX_BOTSHUDICONS	10	// General purpose icons for the HUD
// Bitfield for cg_HUDstyle
#define BOTS_HUD_NEWHUD				1
#define BOTS_HUD_CLASSICON			2


void BOTS_TablePrint(const char *str);

#endif // __CGAME_BOTS_H__
